// BEGIN CUT HERE

// END CUT HERE
#include <algorithm>
#include <bitset>
#include <cassert>
#include <cctype>
#include <cmath>
#include <complex>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <deque>
#include <functional>
#include <iostream>
#include <iterator>
#include <list>
#include <map>
#include <numeric>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <string>
#include <valarray>
#include <vector>
#include <utility>
using namespace std;

#define ALL(v) (v).begin(), (v).end()
#define LET(x,a) typeof(a) x(a)
#define FOR(i,a,n) for(LET(i,a);i!=n;i++)
#define REP(i,n) FOR(i,0,n)
#define sz size()
#define pb push_back
#define LL long long
#define VI vector<int>
#define VII vector< VI >
#define VS vector<string>
#define PRINT(x) REP(i,x.sz) cout<<x[i]<<endl;
#define GI ({int a; cin>>a; a;})
#define COUNT(f,x) ({int _=0;f _+=(x);_;})
#define MIN(f,x) ({LL _=LINF;f _<?=(x);_;})
#define MAX(f,x) (-MIN(f,-(x)))



// BEGIN CUT HERE
#define ARRSIZE(x) (sizeof(x)/sizeof(x[0]))

template<typename T> void print( T a ) {
    cerr << a;
}
static void print( long long a ) {
    cerr << a << "L";
}
static void print( string a ) {
    cerr << '"' << a << '"';
}
template<typename T> void print( vector<T> a ) {
    cerr << "{";
    for ( int i = 0 ; i != a.size() ; i++ ) {
        if ( i != 0 ) cerr << ", ";
        print( a[i] );
    }
    cerr << "}" << endl;
}
template<typename T> void eq( int n, T have, T need ) {
    if ( have == need ) {
        cerr << "Case " << n << " passed." << endl;
    } else {
        cerr << "Case " << n << " failed: expected ";
        print( need );
        cerr << " received ";
        print( have );
        cerr << "." << endl;
    }
}
template<typename T> void eq( int n, vector<T> have, vector<T> need ) {
    if( have.size() != need.size() ) {
        cerr << "Case " << n << " failed: returned " << have.size() << " elements; expected " << need.size() << " elements.";
        print( have );
        print( need );
        return;
    }
    for( int i= 0; i < have.size(); i++ ) {
        if( have[i] != need[i] ) {
            cerr << "Case " << n << " failed. Expected and returned array differ in position " << i << ".";
            print( have );
            print( need );
            return;
        }
    }
    cerr << "Case " << n << " passed." << endl;
}
static void eq( int n, string have, string need ) {
    if ( have == need ) {
        cerr << "Case " << n << " passed." << endl;
    } else {
        cerr << "Case " << n << " failed: expected ";
        print( need );
        cerr << " received ";
        print( have );
        cerr << "." << endl;
    }
}
// END CUT HERE
class DancingCouples {
public:
    int countPairs(vector <string> canDance, int K);


};

int DancingCouples::countPairs(vector <string> canDance, int K) {
  int res;
  return res;
}
// BEGIN CUT HERE
int main( int argc, char* argv[] ) {
    {
        string canDanceARRAY[] = {"YYYY", 
            "YYYY",
            "YYYY"};
        vector <string> canDance( canDanceARRAY, canDanceARRAY+ARRSIZE(canDanceARRAY) );
        DancingCouples theObject;
        eq(0, theObject.countPairs(canDance, 3),24);
    }
    {
        string canDanceARRAY[] = {"YYNN", 
            "NYYN", 
            "NNYY"};
        vector <string> canDance( canDanceARRAY, canDanceARRAY+ARRSIZE(canDanceARRAY) );
        DancingCouples theObject;
        eq(1, theObject.countPairs(canDance, 3),4);
    }
    {
        string canDanceARRAY[] = {"YY", 
            "YY", 
            "YY"};
        vector <string> canDance( canDanceARRAY, canDanceARRAY+ARRSIZE(canDanceARRAY) );
        DancingCouples theObject;
        eq(2, theObject.countPairs(canDance, 3),0);
    }
    {
        string canDanceARRAY[] = {"YYNNNN",
            "NYYNNN",
            "NNYYNN",
            "NNNYYN",
            "NNNNYY",
            "YNNNNY"};
        vector <string> canDance( canDanceARRAY, canDanceARRAY+ARRSIZE(canDanceARRAY) );
        DancingCouples theObject;
        eq(3, theObject.countPairs(canDance, 3),112);
    }
}
// END CUT HERE
